```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>分库分表主键策略指南</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            background-color: #f8fafc;
            color: #1e293b;
        }
        .hero-bg {
            background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
        }
        .card-hover:hover {
            transform: translateY(-5px);
            box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
        }
        .first-letter {
            float: left;
            font-size: 3.5em;
            line-height: 0.8;
            margin-right: 0.1em;
            margin-bottom: -0.1em;
            color: #4f46e5;
            font-weight: 700;
        }
        .divider {
            height: 3px;
            background: linear-gradient(90deg, rgba(79, 70, 229, 0.1) 0%, rgba(79, 70, 229, 1) 50%, rgba(79, 70, 229, 0.1) 100%);
            border: none;
            margin: 2rem 0;
        }
        .tab-button {
            transition: all 0.3s ease;
        }
        .tab-button:hover {
            background-color: rgba(79, 70, 229, 0.1);
        }
        .tab-button.active {
            background-color: rgba(79, 70, 229, 0.2);
            border-left: 3px solid #4f46e5;
        }
    </style>
</head>
<body>
    <!-- Hero Section -->
    <div class="hero-bg text-white py-20 px-4 sm:px-6 lg:px-8">
        <div class="max-w-6xl mx-auto">
            <div class="flex flex-col items-center text-center">
                <h1 class="text-4xl md:text-5xl lg:text-6xl font-bold mb-6 font-serif tracking-tight">
                    <span class="block">分库分表架构中的</span>
                    <span class="block text-indigo-200 mt-2">主键策略指南</span>
                </h1>
                <p class="text-xl md:text-2xl text-indigo-100 max-w-3xl leading-relaxed">
                    探索在分布式数据库环境中确保数据一致性和高性能的最佳实践
                </p>
                <div class="mt-10 flex items-center justify-center space-x-4">
                    <div class="flex items-center">
                        <i class="fas fa-database text-indigo-200 mr-2"></i>
                        <span class="text-indigo-100">分布式系统</span>
                    </div>
                    <div class="flex items-center">
                        <i class="fas fa-key text-indigo-200 mr-2"></i>
                        <span class="text-indigo-100">主键策略</span>
                    </div>
                    <div class="flex items-center">
                        <i class="fas fa-chart-line text-indigo-200 mr-2"></i>
                        <span class="text-indigo-100">性能优化</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Main Content -->
    <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
        <!-- Introduction -->
        <div class="bg-white rounded-xl shadow-md p-8 mb-12">
            <p class="text-lg leading-relaxed text-slate-700">
                <span class="first-letter">在</span>进行分库分表的过程中，处理主键（ID）的策略至关重要。由于数据被分散到多个库和表中，确保主键的唯一性和有效性是一个关键挑战。本文将介绍五种主要的ID生成策略，帮助您在分布式数据库环境中保持数据的完整性和查询效率。
            </p>
        </div>

        <!-- Content Tabs -->
        <div class="flex flex-col md:flex-row gap-8 mb-16">
            <!-- Tab Navigation -->
            <div class="md:w-1/4">
                <div class="sticky top-8">
                    <div class="bg-white rounded-xl shadow-sm overflow-hidden">
                        <div class="p-4 bg-indigo-50 border-b border-indigo-100">
                            <h3 class="font-bold text-indigo-700 flex items-center">
                                <i class="fas fa-list-ul mr-2"></i>
                                策略目录
                            </h3>
                        </div>
                        <div class="space-y-1">
                            <button class="tab-button w-full text-left p-4 text-slate-700 hover:text-indigo-600" onclick="showTab(1)">
                                <i class="fas fa-globe mr-2"></i>
                                全局唯一ID生成
                            </button>
                            <button class="tab-button w-full text-left p-4 text-slate-700 hover:text-indigo-600" onclick="showTab(2)">
                                <i class="fas fa-sort-numeric-up-alt mr-2"></i>
                                数据库自增ID
                            </button>
                            <button class="tab-button w-full text-left p-4 text-slate-700 hover:text-indigo-600" onclick="showTab(3)">
                                <i class="fas fa-key mr-2"></i>
                                复合主键
                            </button>
                            <button class="tab-button w-full text-left p-4 text-slate-700 hover:text-indigo-600" onclick="showTab(4)">
                                <i class="fas fa-server mr-2"></i>
                                代理主键
                            </button>
                            <button class="tab-button w-full text-left p-4 text-slate-700 hover:text-indigo-600" onclick="showTab(5)">
                                <i class="fas fa-tools mr-2"></i>
                                数据库管理工具
                            </button>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Tab Content -->
            <div class="md:w-3/4">
                <!-- Tab 1: Global ID -->
                <div id="tab-1" class="tab-content bg-white rounded-xl shadow-sm p-8 mb-8 card-hover transition-all duration-300">
                    <div class="flex items-center mb-6">
                        <div class="bg-indigo-100 p-3 rounded-full mr-4">
                            <i class="fas fa-globe text-indigo-600 text-xl"></i>
                        </div>
                        <h2 class="text-2xl font-bold text-slate-800">全局唯一 ID 生成</h2>
                    </div>
                    
                    <div class="mb-6">
                        <p class="text-slate-700 leading-relaxed mb-4">
                            使用全局唯一的 ID 生成器确保主键在所有分库分表中唯一。这种方法不依赖数据库的自增特性，而是通过算法或服务生成在整个系统中唯一的标识符。
                        </p>
                        
                        <div class="bg-indigo-50 rounded-lg p-6 mb-6">
                            <h3 class="font-bold text-indigo-700 mb-3 flex items-center">
                                <i class="fas fa-lightbulb mr-2"></i>
                                常见方法
                            </h3>
                            <ul class="space-y-3 pl-5">
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>UUID</strong>：使用 UUID（通用唯一识别码）作为主键。UUID 是 128 位的数字，生成的 ID 在全局范围内唯一。但 UUID 的缺点是较长，存储和索引的性能不如整型。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>Snowflake 算法</strong>：例如 Twitter 的 Snowflake 算法，通过时间戳、机器 ID 和序列号生成唯一 ID。这种方法生成的 ID 是 64 位整数，具有较高的性能和较小的存储空间。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>分布式 ID 生成器</strong>：使用分布式 ID 生成工具，如 Leaf、Snowflake、HiLo 等，这些工具可以生成唯一且有序的 ID。
                                    </div>
                                </li>
                            </ul>
                        </div>
                        
                        <h3 class="font-bold text-slate-800 mb-3 flex items-center">
                            <i class="fas fa-tasks mr-2"></i>
                            实施步骤
                        </h3>
                        <ol class="list-decimal pl-6 space-y-2 text-slate-700">
                            <li>根据系统需求选择合适的全局唯一 ID 生成器</li>
                            <li>将 ID 生成器集成到应用程序中，确保每次插入数据时生成唯一的主键</li>
                        </ol>
                    </div>
                    
                    <div class="mermaid">
                        graph TD
                            A[全局唯一ID生成] --> B[UUID]
                            A --> C[Snowflake算法]
                            A --> D[分布式ID生成器]
                            B --> E[优点: 全局唯一]
                            B --> F[缺点: 存储空间大]
                            C --> G[优点: 性能好]
                            C --> H[缺点: 依赖时钟]
                    </div>
                </div>

                <!-- Tab 2: Auto Increment -->
                <div id="tab-2" class="tab-content bg-white rounded-xl shadow-sm p-8 mb-8 card-hover transition-all duration-300 hidden">
                    <div class="flex items-center mb-6">
                        <div class="bg-indigo-100 p-3 rounded-full mr-4">
                            <i class="fas fa-sort-numeric-up-alt text-indigo-600 text-xl"></i>
                        </div>
                        <h2 class="text-2xl font-bold text-slate-800">数据库自增 ID</h2>
                    </div>
                    
                    <div class="mb-6">
                        <p class="text-slate-700 leading-relaxed mb-4">
                            在分库分表的情况下，使用数据库自增 ID 需要处理 ID 的分配和避免冲突。这种方法仍然使用数据库的自增特性，但需要通过额外措施确保不同分片的ID不重复。
                        </p>
                        
                        <div class="bg-indigo-50 rounded-lg p-6 mb-6">
                            <h3 class="font-bold text-indigo-700 mb-3 flex items-center">
                                <i class="fas fa-lightbulb mr-2"></i>
                                常见方法
                            </h3>
                            <ul class="space-y-3 pl-5">
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>表前缀/后缀</strong>：在主键中使用表前缀或后缀，例如，在 ID 中加入表的分片信息（如 `user_001_123`）。这种方法可以确保不同表中的 ID 唯一，但 ID 的设计变得复杂。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>分片算法</strong>：将自增 ID 的生成逻辑交给数据库，使用分片算法生成不同分片的 ID。例如，通过配置数据库的自增起始值和步长，确保各分片的 ID 不重叠。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>ID 实体表</strong>：维护一个专门的 ID 生成表，在该表中存储当前最大 ID 和分片信息，每次请求新的 ID 时从该表中获取。这种方法需要处理并发问题，确保 ID 的唯一性。
                                    </div>
                                </li>
                            </ul>
                        </div>
                        
                        <h3 class="font-bold text-slate-800 mb-3 flex items-center">
                            <i class="fas fa-tasks mr-2"></i>
                            实施步骤
                        </h3>
                        <ol class="list-decimal pl-6 space-y-2 text-slate-700">
                            <li>根据分库分表的方式设计自增 ID 的生成策略</li>
                            <li>配置数据库的自增起始值和步长，确保 ID 在各分片中唯一</li>
                        </ol>
                    </div>
                    
                    <div class="mermaid">
                        graph LR
                            A[数据库自增ID] --> B[表前缀/后缀]
                            A --> C[分片算法]
                            A --> D[ID实体表]
                            B --> E[优点: 实现简单]
                            B --> F[缺点: ID设计复杂]
                            C --> G[优点: 无需额外服务]
                            C --> H[缺点: 扩容困难]
                    </div>
                </div>

                <!-- Tab 3: Composite Key -->
                <div id="tab-3" class="tab-content bg-white rounded-xl shadow-sm p-8 mb-8 card-hover transition-all duration-300 hidden">
                    <div class="flex items-center mb-6">
                        <div class="bg-indigo-100 p-3 rounded-full mr-4">
                            <i class="fas fa-key text-indigo-600 text-xl"></i>
                        </div>
                        <h2 class="text-2xl font-bold text-slate-800">复合主键</h2>
                    </div>
                    
                    <div class="mb-6">
                        <p class="text-slate-700 leading-relaxed mb-4">
                            使用复合主键来组合不同的字段，确保在分库分表中唯一。这种方法将多个字段组合作为主键，通常包括分片信息和业务信息。
                        </p>
                        
                        <div class="bg-indigo-50 rounded-lg p-6 mb-6">
                            <h3 class="font-bold text-indigo-700 mb-3 flex items-center">
                                <i class="fas fa-lightbulb mr-2"></i>
                                常见方法
                            </h3>
                            <ul class="space-y-3 pl-5">
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>分片键和自增 ID 组合</strong>：将分片键（例如，分片号）和自增 ID 组合成复合主键，如 `(shard_id, auto_increment_id)`。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>自然主键</strong>：使用业务中自然存在的唯一字段作为主键（如用户邮箱、订单号等），但这种方法依赖于业务字段的唯一性和稳定性。
                                    </div>
                                </li>
                            </ul>
                        </div>
                        
                        <h3 class="font-bold text-slate-800 mb-3 flex items-center">
                            <i class="fas fa-tasks mr-2"></i>
                            实施步骤
                        </h3>
                        <ol class="list-decimal pl-6 space-y-2 text-slate-700">
                            <li>根据业务需求设计复合主键</li>
                            <li>修改应用程序逻辑以支持复合主键的插入和查询</li>
                        </ol>
                    </div>
                    
                    <div class="mermaid">
                        graph BT
                            A[复合主键] --> B[分片键+自增ID]
                            A --> C[自然主键]
                            B --> D[优点: 保证唯一性]
                            B --> E[缺点: 查询条件复杂]
                            C --> F[优点: 业务意义明确]
                            C --> G[缺点: 依赖业务字段]
                    </div>
                </div>

                <!-- Tab 4: Proxy Key -->
                <div id="tab-4" class="tab-content bg-white rounded-xl shadow-sm p-8 mb-8 card-hover transition-all duration-300 hidden">
                    <div class="flex items-center mb-6">
                        <div class="bg-indigo-100 p-3 rounded-full mr-4">
                            <i class="fas fa-server text-indigo-600 text-xl"></i>
                        </div>
                        <h2 class="text-2xl font-bold text-slate-800">代理主键</h2>
                    </div>
                    
                    <div class="mb-6">
                        <p class="text-slate-700 leading-relaxed mb-4">
                            使用代理主键来生成唯一的主键值。这种方法通过专门的ID生成服务来分配主键，确保在分布式环境中的唯一性。
                        </p>
                        
                        <div class="bg-indigo-50 rounded-lg p-6 mb-6">
                            <h3 class="font-bold text-indigo-700 mb-3 flex items-center">
                                <i class="fas fa-lightbulb mr-2"></i>
                                常见方法
                            </h3>
                            <ul class="space-y-3 pl-5">
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>代理生成器</strong>：通过代理服务器或独立的 ID 生成服务生成主键，确保唯一性和分布式环境下的有效性。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>集中式 ID 生成服务</strong>：提供一个集中式服务来生成唯一 ID，将其作为主键插入到数据库中。
                                    </div>
                                </li>
                            </ul>
                        </div>
                        
                        <h3 class="font-bold text-slate-800 mb-3 flex items-center">
                            <i class="fas fa-tasks mr-2"></i>
                            实施步骤
                        </h3>
                        <ol class="list-decimal pl-6 space-y-2 text-slate-700">
                            <li>选择合适的代理 ID 生成服务</li>
                            <li>在应用程序中集成代理 ID 生成服务，以确保主键的唯一性</li>
                        </ol>
                    </div>
                    
                    <div class="mermaid">
                        graph LR
                            A[代理主键] --> B[代理生成器]
                            A --> C[集中式服务]
                            B --> D[优点: 高可用]
                            B --> E[缺点: 单点风险]
                            C --> F[优点: 统一管理]
                            C --> G[缺点: 性能瓶颈]
                    </div>
                </div>

                <!-- Tab 5: DB Tools -->
                <div id="tab-5" class="tab-content bg-white rounded-xl shadow-sm p-8 mb-8 card-hover transition-all duration-300 hidden">
                    <div class="flex items-center mb-6">
                        <div class="bg-indigo-100 p-3 rounded-full mr-4">
                            <i class="fas fa-tools text-indigo-600 text-xl"></i>
                        </div>
                        <h2 class="text-2xl font-bold text-slate-800">数据库管理工具和策略</h2>
                    </div>
                    
                    <div class="mb-6">
                        <p class="text-slate-700 leading-relaxed mb-4">
                            利用数据库的内置管理工具和策略来处理分库分表的主键问题。这种方法依赖于专门的数据库工具或中间件来管理主键生成。
                        </p>
                        
                        <div class="bg-indigo-50 rounded-lg p-6 mb-6">
                            <h3 class="font-bold text-indigo-700 mb-3 flex items-center">
                                <i class="fas fa-lightbulb mr-2"></i>
                                常见方法
                            </h3>
                            <ul class="space-y-3 pl-5">
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>分布式数据库系统</strong>：使用支持分库分表的分布式数据库系统，如 ShardingSphere、CockroachDB 等，这些系统内置了主键生成和管理的功能。
                                    </div>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-circle text-xs text-indigo-500 mt-2 mr-2"></i>
                                    <div>
                                        <strong>数据库脚本和配置</strong>：编写数据库脚本和配置来管理主键生成和分配策略。
                                    </div>
                                </li>
                            </ul>
                        </div>
                        
                        <h3 class="font-bold text-slate-800 mb-3 flex items-center">
                            <i class="fas fa-tasks mr-2"></i>
                            实施步骤
                        </h3>
                        <ol class="list-decimal pl-6 space-y-2 text-slate-700">
                            <li>选择支持分库分表和主键管理的数据库工具</li>
                            <li>配置数据库工具以处理主键生成和分配</li>
                        </ol>
                    </div>
                    
                    <div class="mermaid">
                        graph TD
                            A[数据库工具] --> B[分布式数据库]
                            A --> C[脚本配置]
                            B --> D[优点: 开箱即用]
                            B --> E[缺点: 学习成本]
                            C --> F[优点: 灵活定制]
                            C --> G[缺点: 维护成本]
                    </div>
                </div>
            </div>
        </div>

        <!-- Comparison Section -->
        <div class="bg-white rounded-xl shadow-md p-8 mb-16">
            <h2 class="text-2xl font-bold text-slate-800 mb-6 flex items-center">
                <i class="fas fa-balance-scale text-indigo-600 mr-3"></i>
                主键策略对比分析
            </h2>
            
            <div class="overflow-x-auto">
                <table class="min-w-full divide-y divide-slate-200">
                    <thead class="bg-indigo-50">
                        <tr>
                            <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-indigo-700 uppercase tracking-wider">策略</th>
                            <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-indigo-700 uppercase tracking-wider">优点</th>
                            <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-indigo-700 uppercase tracking-wider">缺点</th>
                            <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-indigo-700 uppercase tracking-wider">适用场景</th>
                        </tr>
                    </thead>
                    <tbody class="bg-white divide-y divide-slate-200">
                        <tr>
                            <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-slate-900">全局唯一ID</td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                <ul class="list-disc pl-5">
                                    <li>全局唯一</li>
                                    <li>不依赖数据库</li>
                                    <li>分布式友好</li>
                                </ul>
                            </td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                <ul class="list-disc pl-5">
                                    <li>部分方案无序</li>
                                    <li>存储空间大</li>
                                    <li>部分方案时钟依赖</li>
                                </ul>
                            </td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                高并发分布式系统
                            </td>
                        </tr>
                        <tr>
                            <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-slate-900">数据库自增ID</td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                <ul class="list-disc pl-5">
                                    <li>简单易用</li>
                                    <li>有序递增</li>
                                    <li>存储高效</li>
                                </ul>
                            </td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                <ul class="list-disc pl-5">
                                    <li>分片扩展困难</li>
                                    <li>ID分配方案复杂</li>
                                    <li>中心化依赖</li>
                                </ul>
                            </td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                中小规模分片系统
                            </td>
                        </tr>
                        <tr>
                            <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-slate-900">复合主键</td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                <ul class="list-disc pl-5">
                                    <li>业务意义明确</li>
                                    <li>保证唯一性</li>
                                    <li>可扩展性好</li>
                                </ul>
                            </td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                <ul class="list-disc pl-5">
                                    <li>查询条件复杂</li>
                                    <li>应用逻辑复杂</li>
                                    <li>依赖业务字段</li>
                                </ul>
                            </td>
                            <td class="px-6 py-4 text-sm text-slate-500">
                                业务分片明确场景
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

        <!-- Summary Section -->
        <div class="bg-indigo-50 rounded-xl p-8">
            <h2 class="text-2xl font-bold text-indigo-800 mb-6 flex items-center">
                <i class="fas fa-check-circle text-indigo-600 mr-3"></i>
                策略选择建议
            </h2>
            <div class="grid md:grid-cols-2 gap-8">
                <div>
                    <h3 class="text-lg font-semibold text-slate-800 mb-3">考虑因素</h3>
                    <ul class="space-y-3">
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-indigo-500 mr-2 mt-1"></i>
                            <span class="text-slate-700">数据规模和增长预期</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-indigo-500 mr-2 mt-1"></i>
                            <span class="text-slate-700">系统架构复杂度</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-indigo-500 mr-2 mt-1"></i>
                            <span class="text-slate-700">开发维护成本</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-indigo-500 mr-2 mt-1"></i>
                            <span class="text-slate-700">查询性能要求</span>
                        </li>
                    </ul>
                </div>
                <div>
                    <h3 class="text-lg font-semibold text-slate-800 mb-3">推荐方案</h3>
                    <div class="bg-white rounded-lg p-4 shadow-sm">
                        <p class="text-slate-700 mb-3">
                            <i class="fas fa-star text-indigo-500 mr-2"></i>
                            <strong>中小规模系统：</strong>数据库自增ID+分片算法
                        </p>
                        <p class="text-slate-700 mb-3">
                            <i class="fas fa-star text-indigo-500 mr-2"></i>
                            <strong>大型分布式系统：</strong>Snowflake或类似全局ID方案
                        </p>
                        <p class="text-slate-700">
                            <i class="fas fa-star text-indigo-500 mr-2"></i>
                            <strong>业务分片明确场景：</strong>复合主键方案
                        </p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Initialize Mermaid
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
            }
        });

        // Tab functionality
        function showTab(tabNumber) {
            // Hide all tabs
            document.querySelectorAll('.tab-content').forEach(tab => {
                tab.classList.add('hidden');
            });
            
            // Show selected tab
            document.getElementById('tab-'+tabNumber).classList.remove('hidden');
            
            // Update active tab button
            document.querySelectorAll('.tab-button').forEach(button => {
                button.classList.remove('active', 'text-indigo-600', 'font-medium');
            });
            document.querySelectorAll('.tab-button')[tabNumber-1].classList.add('active', 'text-indigo-600', 'font-medium');
        }

        // Show first tab by default
        document.addEventListener('DOMContentLoaded', function() {
            showTab(1);
        });
    </script>
</body>
</html>
```